import logging
import colorlog

class Logger:
    def __init__(self, log_path="./lib/log/app.log"):
        self.log_path = log_path
        self.logger = logging.getLogger("my_logger")
        self.logger.setLevel(logging.DEBUG)

        # 创建一个输出到文件的处理器
        file_handler = logging.FileHandler(self.log_path)
        file_handler.setLevel(logging.DEBUG)

        # 创建一个输出到控制台的处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.INFO)

        # 创建格式器并将其添加到处理器
        # 创建输出台格式器
        console_formatter = colorlog.ColoredFormatter(
            '%(log_color)s%(asctime)s   [%(levelname)s]   %(message)s%(reset)s',
            datefmt='%Y-%m-%d %H:%M:%S',
            log_colors={
                'DEBUG': 'white',
                'INFO': 'green',
                'WARNING': 'yellow',
                'ERROR': 'red',
            }
        )
        # 创建输出到文件的格式器
        file_formatter = logging.Formatter('%(asctime)s   [%(levelname)s]   %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

        # 设置控制台处理器的格式器
        console_handler.setFormatter(console_formatter)

        # 设置文件处理器的格式器
        file_handler.setFormatter(file_formatter)

        # 将处理器添加到日志记录器
        self.logger.addHandler(file_handler)
        self.logger.addHandler(console_handler)

    def log_info(self, message):
        self.logger.info(message)

    def log_warning(self, message):
        self.logger.warning(message)

    def log_error(self, message):
        self.logger.error(message)


if __name__ == "__main__":
    log = Logger()